// 解题思路:
// 题目给 n 个数，1 <= n <= 100000, 且每个数的范围为 1 <= arr[i] <= 1e9
// 题目要求每次找出最大的数，除以 2，操作不超过 k 次，求最小和
// 数据量也比较多，因此建议使用快读模板
// 因为每次都要找最大的元素，因此需要使用堆（大根堆）
// 又因为数据给的非常大，稍微一求和就会超出 int 的范围，因此要定义 long 类型的 sum
// 不需要把所有的元素都存下来，只需要把偶数存起来即可
// 注意：存起来的偶数除以 2 后，仍然有可能是非常大的数，因此还要再存到堆里面
// 每次弹出堆顶元素，进行操作，直至操作 k 次，或者堆为空

import java.util.*;
import java.io.*;

public class CalSum {
    public static Read in = new Read();
    public static void main(String[] args) throws IOException{
        int n = in.nextInt();
        int k = in.nextInt();
        PriorityQueue<Integer> heap = new PriorityQueue<>((a, b) -> b - a);
        long sum = 0;

        for(int i = 0; i < n; i++){
            int num = in.nextInt();
            if(num % 2 == 1){
                sum += num;
            }else{
                heap.offer(num);
            }
        }

        int i = 0;
        while(!heap.isEmpty()){
            int num = heap.poll();
            if(i < k){
                num /= 2;
                i++;
                if(num % 2 == 1){
                    sum += num;
                }else{
                    heap.offer(num);
                }
            }else{
                sum += num;
            }
        }

        System.out.println(sum);
    }
}

class Read{
    BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st = new StringTokenizer("");

    String next() throws IOException{
        while(!st.hasMoreTokens()){
            st = new StringTokenizer(bf.readLine());
        }
        return st.nextToken();
    }

    int nextInt() throws IOException{
        return Integer.parseInt(next());
    }
}
